package br.com.vti.leilao.model.entity;

import java.io.Serializable;

/**
 * Interface utilizada pelas entidades de domínio.
 * 
 * @param <ID> tipo da chave primária
 * @author Ednardo Rubens
 * 
 */
public interface Model<ID extends Number> extends Serializable {

    /**
     * Retorna o id da entidade
     * @return integer
     */
    ID getId();

    /**
     * Seta o id da entidade
     * @param id chave primaria
     */
    void setId(ID id);

    /**
     * Retorna um código para identificação do objeto
     * @return int
     */
    @Override
    int hashCode();

    /**
     * Verifica se este objeto é igual ao objeto passado
     * @param object Objeto
     * @return boolean
     */
    @Override
    boolean equals(Object object);
}
